package com.manuelvs.bobbysadventure;

public class bobby
{
	boolean _jumping=false;
    public float _height=149;
    float last_height=0;
    public int _Width=130;
    int salto=0;
    boolean _bobbyLanded=true;
    char animate=0;
    boolean atack=false;
    boolean escaleras=false;
    char counter=0;
    int operation=0;
    char lastdireccion=1; //if 1 a la derecha if 2 a la izquierda
    boolean kill=false;
    int score=0;
    float speed=0f;

	char remoteplataforma = 0;
	char plataforma = 0;
	
	public bobby()
	{
	}
	
	public void move(float pSecondsElapsed)
	{
		switch (operation)
		{
		case 0:
			animate=18;
			break;
			
		case 1:
			if(escaleras) _Width++;
			else
			{
				_Width+=2;
				animate++;
				if(animate>8) animate=0;
				lastdireccion=1;
			}
			break;
		case 2:
			if(escaleras) _Width--;
			else
			{
				_Width-=2;
				animate++;
				if(animate<9) animate=9;
				if(animate>17) animate=9;
				lastdireccion=2;
			}
			break;
		case 3:
			if(escaleras) _height++;
			break;
		case 4:
			if (escaleras) _height--;
			else 
				if(_bobbyLanded)
				{
					speed=4f;
					_bobbyLanded=false;
					setJumping(true);
					animate=4;
				}
			
			break;
		case 5:
			if(escaleras)
			{
				_height--;
				_Width++;
			}
			else
			{
				if(_bobbyLanded)
				{
					speed=4f;
					_bobbyLanded=false;
					setJumping(true);
					animate=4;
				}
				_Width+=2;
			}
			
			break;
		case 6:
			if(escaleras)
			{
				_height--;
				_Width--;
			}
			else
			{
				if(_bobbyLanded)
				{
					speed=4f;
					_bobbyLanded=false;
					setJumping(true);
					animate=13;
				}
				_Width-=2;
			}
			
			break;
		case 7:
			if(!escaleras && _bobbyLanded)
			{
				atack=true;
				kill=true;
			}
			break;
		case 8:
			if(escaleras)
			{
				_height++;
				_Width--;
			}
			break;
		case 9:
			if(escaleras)
			{
				_height++;
				_Width++;
			}
			break;
		}
		if(escaleras)
		{
			if(animate<21) animate=21;
			if(animate>31) animate=21;
			animate++;
			speed=0f;
			if(_height<45) _height=45;
		}
		if(!_bobbyLanded && !escaleras && !isJumping()) 
		{
			_height+=speed;
			speed+=0.2f;
		}
		if(_bobbyLanded) speed=0f;
		if(atack && !escaleras)
		{
			counter++;
			if(counter<20)
			{
				if(lastdireccion==1) animate=34;
				if(lastdireccion==2) animate=19;
			}
			if(counter>20 && counter<40)
			{
				if(lastdireccion==1) animate=33;
				if(lastdireccion==2) animate=20;
			}
			if(counter==40)
			{
				atack=false;
				counter=0;
			}
		}
		
		
		if(_height>241) _height=241;
		if(_height==241)
		{
			if(_Width<=59) _Width=59;
			if(_Width>=382)	_Width=382;
		}
		
		if(_Width<=24) _Width=24;
		if(_Width>=421) _Width=421;
			
		/*if(_height>95 && _height<127)
		{
			if(_Width<=59) _Width=59;
			if(_Width>=382) _Width=382;
		}*/
		
		if(_height>=149 && _height <=184)
		{
			if(_Width<=204 && _Width>=68)
			{
				if(_Width<202 && _Width>200) _Width=203;
				if(_Width>68 && _Width<70) _Width=67;
			}
			if(_Width<=367 && _Width>=233)
			{
				if(_Width<367 && _Width>365) _Width=368;
				if(_Width>233 && _Width<235) _Width=232;
			}
		}
		if(_height>=46 && _height<=81)
		{
			if(_Width<=204 && _Width>=68)
			{
				if(_Width<202 && _Width>200) _Width=203;
				if(_Width>68 && _Width<70) _Width=67;
			}
			if(_Width<=367 && _Width>=233)
			{
				if(_Width<367 && _Width>365) _Width=368;
				if(_Width>233 && _Width<235) _Width=232;
			}
		}
		
		if(_Width>190 && _Width<240)
		{
			if((operation==4 || operation==5 || operation==6) && _height>45) escaleras=true;
		}
		else
		{
			escaleras=false;
		}

		if(!escaleras &&(_Width<59 && _Width>23 && _height>=203 && _height<=241) || 
				(_Width>385 && _Width<425 && _height>=203 && _height<=241))
		{//pibotes bajos
			_bobbyLanded=true;
			_height=203;
		}
		else if(!escaleras && (_Width<56 && _Width>23 && _height>=96 && _height <=127) || 
				(_Width>385 && _Width<425 && _height>=96 && _height <=127))
		{//pibotes altos
			_bobbyLanded=true;
			_height=96;
		}
		else if(!escaleras && (_Width<202 && _Width>70 && _height>=149 && _height <=184) || 
				(_Width>235 && _Width<365 && _height>=149 && _height <=184))
		{//baldosa enmedio baja
			_bobbyLanded=true;
			_height=149;
		}
		else if(!escaleras &&(_Width<202 && _Width>70 && _height>=46 && _height <=81) || 
				(_Width>235 && _Width<365 && _height>=46 && _height <=81))
		{//baldosa enmedio alta
			_bobbyLanded=true;
			_height=46;
		}
		else if(_Width<388 && _Width>56 && _height==241)
		{//suelo bajo
			_bobbyLanded=true;
		}
		else
		{
			if(!isJumping() && !escaleras)
			{
				_bobbyLanded=false;
			}
		}

	}
	
	
	public void jump()
	{
		_height-=speed;
		speed-=0.2f;
		if(speed<=0)
		{
			speed=0f;
			setJumping(false);
		}
	}

	public int movecpu(int _Width, float _height, int _remoteWidth, float _remoteheight)
	{
		int remoteoperation = 0;

		
		if(_Width<59 && _Width>23 && _height>=203 && _height<=241) 
			plataforma=1;
		if(_Width>385 && _Width<425 && _height>=203 && _height<=241)//pibotes bajos
			plataforma=2;
		if(_Width<202 && _Width>70 && _height>=149 && _height <=184)
			plataforma=3;
		if(_Width>235 && _Width<365 && _height>=149 && _height <=184)//baldosa enmedio baja
			plataforma=4;
		if(_Width<56 && _Width>23 && _height>=96 && _height <=127) 
			plataforma=5;
		if(_Width>385 && _Width<425 && _height>=96 && _height <=127) //pibotes altos
			plataforma=6;
		if(_Width<202 && _Width>70 && _height>=46 && _height <=81)
			plataforma=7;
		if(_Width>235 && _Width<365 && _height>=46 && _height <=81)//baldosa enmedio alta
			plataforma=8;
		if(_Width<388 && _Width>56 && _height==241)//suelo bajo
			plataforma=0;
		//////////////////////		
		if(_remoteWidth<59 && _remoteWidth>23 && _remoteheight>=203 && _remoteheight<=241) 
			remoteplataforma=1;
		if(_remoteWidth>385 && _remoteWidth<425 && _remoteheight>=203 && _remoteheight<=241)//pibotes bajos
			remoteplataforma=2;
		if(_remoteWidth<202 && _remoteWidth>70 && _remoteheight>=149 && _remoteheight <=184)
			remoteplataforma=3;
		if(_remoteWidth>235 && _remoteWidth<365 && _remoteheight>=149 && _remoteheight <=184)//baldosa enmedio baja
			remoteplataforma=4;
		if(_remoteWidth<56 && _remoteWidth>23 && _remoteheight>=96 && _remoteheight <=127) 
			remoteplataforma=5;
		if(_remoteWidth>385 && _remoteWidth<425 && _remoteheight>=96 && _remoteheight <=127) //pibotes altos
			remoteplataforma=6;
		if(_remoteWidth<202 && _remoteWidth>70 && _remoteheight>=46 && _remoteheight <=81)
			remoteplataforma=7;
		if(_remoteWidth>235 && _remoteWidth<365 && _remoteheight>=46 && _remoteheight <=81)//baldosa enmedio alta
			remoteplataforma=8;
		if(_remoteWidth<388 && _remoteWidth>56 && _remoteheight==241)//suelo bajo
			remoteplataforma=0;
		
		if(remoteplataforma==8)
		{
			if(plataforma==7) remoteoperation=2;
			if(plataforma==6) remoteoperation=1;
			if(plataforma==5) remoteoperation=6;
			if(plataforma==4) remoteoperation=1;
			if(plataforma==3) remoteoperation=2;
			if(plataforma==2) remoteoperation=1;
			if(plataforma==1) remoteoperation=2;
			if(plataforma==0) remoteoperation=2;
		}
		if(remoteplataforma==7)
		{
			if(plataforma==8) remoteoperation=1;
			if(plataforma==6) remoteoperation=5;
			if(plataforma==5) remoteoperation=2;
			if(plataforma==4) remoteoperation=2;
			if(plataforma==3) remoteoperation=2;
			if(plataforma==2) remoteoperation=1;
			if(plataforma==1) remoteoperation=2;
			if(plataforma==0) remoteoperation=1;
		}
		if(remoteplataforma==6)
		{
			if(plataforma==8) remoteoperation=6;
			if(plataforma==7) remoteoperation=6;
			if(plataforma==5) remoteoperation=2;
			if(plataforma==4) remoteoperation=2;
			if(plataforma==3) remoteoperation=2;
			if(plataforma==2) remoteoperation=2;
			if(plataforma==1) remoteoperation=2;
			if(plataforma==0) remoteoperation=2;
		}
		if(remoteplataforma==5)
		{
			if(plataforma==8) remoteoperation=5;
			if(plataforma==7) remoteoperation=5;
			if(plataforma==6) remoteoperation=5;
			if(plataforma==4) remoteoperation=1;
			if(plataforma==3) remoteoperation=1;
			if(plataforma==2) remoteoperation=1;
			if(plataforma==1) remoteoperation=1;
			if(plataforma==0) remoteoperation=1;
		}
		if(remoteplataforma==4)
		{
			if(plataforma==8) remoteoperation=6;
			if(plataforma==7) remoteoperation=6;
			if(plataforma==6) remoteoperation=6;
			if(plataforma==5) remoteoperation=2;
			if(plataforma==3) remoteoperation=6;
			if(plataforma==2) remoteoperation=1;
			if(plataforma==1) remoteoperation=2;
			if(plataforma==0) remoteoperation=2;
		}
		if(remoteplataforma==3)
		{
			if(plataforma==8) remoteoperation=6;
			if(plataforma==7) remoteoperation=6;
			if(plataforma==6) remoteoperation=6;
			if(plataforma==5) remoteoperation=5;
			if(plataforma==4) remoteoperation=1;
			if(plataforma==2) remoteoperation=1;
			if(plataforma==1) remoteoperation=2;
			if(plataforma==0) remoteoperation=1;
		}
		if(remoteplataforma==2)
		{
			if(plataforma==8) remoteoperation=6;
			if(plataforma==7) remoteoperation=6;
			if(plataforma==6) remoteoperation=6;
			if(plataforma==5) remoteoperation=6;
			if(plataforma==4) remoteoperation=6;
			if(plataforma==3) remoteoperation=6;
			if(plataforma==1) remoteoperation=2;
			if(plataforma==0) remoteoperation=2;
		}
		if(remoteplataforma==1)
		{
			if(plataforma==8) remoteoperation=5;
			if(plataforma==7) remoteoperation=5;
			if(plataforma==6) remoteoperation=5;
			if(plataforma==5) remoteoperation=5;
			if(plataforma==4) remoteoperation=5;
			if(plataforma==3) remoteoperation=5;
			if(plataforma==2) remoteoperation=1;
			if(plataforma==0) remoteoperation=1;
		}
		if(remoteplataforma==0)
		{
			if(plataforma==8) remoteoperation=5;
			if(plataforma==7) remoteoperation=6;
			if(plataforma==6) remoteoperation=5;
			if(plataforma==5) remoteoperation=6;
			if(plataforma==4) remoteoperation=5;
			if(plataforma==3) remoteoperation=5;
			if(plataforma==2) remoteoperation=5;
			if(plataforma==1) remoteoperation=6;
		}
		if(plataforma==remoteplataforma)
		{
			if(_Width>_remoteWidth) remoteoperation=1;
			if(_Width<_remoteWidth) remoteoperation=2;
			if(_Width<_remoteWidth+25 && _Width >_remoteWidth-25) remoteoperation=7;
		}
		return remoteoperation;
	}
	
	public void kill()
	{
		_Width=130;
		_height=149;
		kill=false;
		score++;
	}
	

	public void setJumping(boolean jump) { _jumping=jump;}
	public boolean isJumping() {return _jumping;}
	
}
